package Day_0204.MYSQL;

/**
 * @author zxc
 * @date 2023/02/04 17:30
 **/
public class Lock_Escalation {
    public static void main(String[] args) {
        /**
         * 谈一谈对于锁升级的理解
         * ===》
         * 1.MySQL行锁只能加在索引上，如果操作不走索引，就会升级为表锁。
         * （1）InnoDB 的行锁是加在索引上的，如果不走索引，自然就没法使用行锁了;
         * （2）InnoDB 是将 primary-key-index（聚簇索引）和相关的行数据共同放在 B+ 树的叶节点;
         * （3）InnoDB 必然会有 primary-key（主键），secondary-index（辅助索引） 查找的时候，
         *  也是通过找到对应的 primary，再找对应的数据行。
         *
         * 2.当非唯一索引上的重复记录数超过一定数量时，行锁也会升级为表锁。
         * （1）当非唯一索引相同的内容不少于整个表记录的二分之一时会升级为表锁;
         * （2）当非唯一索引相同的内容达到整个记录的二分之一时，索引需要的性能比全文检索还要大;
         * （3）查询语句优化时会选择不走索引，造成索引失效，行锁自然就会升级为表锁;
         *
         */
    }
}
